package mymyoux.io.mserveur.mapping
{
	/**
	 * Classe servant d'enveloppe pour l'envoi de message à travers un MAdvBinSocket Serveur.
	 * Le serveur s'est interpreter ses fonctions et paramètres.
	 * <p><b>Ne pas modifier.</b></p>
	 * <p><b>N'est normalement pas utilisé directement.</b></p>
	 */
	public class PyGram
	{
		/**
		 * Action renvoyée par le serveur lorsque le mot de passe fourni est incorrect.
		 */
		public static const BAD_IDENTIFICATION:String="bad_identification";
		/**
		 * Action renvoyée par le serveur lorsque le délai est trop important. <b>not implemented yet</b>
		 */
		public static const TIMEOUT:String="timeout";
		/**
		 * Action renvoyée par le serveur si celui-ci ne peut plus accepter de clients.
		 */
		public static const TOO_MANY_PEOPLE:String="too_many_people";
		/**
		 * Action renvoyée par le serveur lors d'une identification réussie.
		 */
		public static const GOOD_IDENTIFICATION:String="good_identification";
		/**
		 * Action renvoyée par le serveur si un client a déjà le même idx et pre_idx.
		 */
		public static const ALREADY_CONNECTED:String="already_connected";
		/**
		 * Action renvoyée par le serveur si celui-ci accepte le client dans le nouveau salon.
		 */
		public static const ENTER_ROOM:String="enter_room";
		/**
		 * Action renvoyée par le serveur lors de la connexion d'un client dans un de salons où se trouve le client.
		 */
		public static const PEOPLE_IN:String="people_in";
		/**
		 * Action renvoyée par le serveur lors de la déconnexion d'un client dans un de salons où se trouve le client.
		 */
		public static const PEOPLE_OUT:String="people_out";
		
		
		//spécifiques à flash :
		/**
		 * Action renvoyée lorsqu'une erreur de transfert de données intervient.
		 */
		public static const IO_ERROR:String="io_error";
		/**
		 * Action renvoyée lorsqu'une erreur liée à la sécurité intervient.
		 */
		public static const SECURITY_ERROR:String="security_error";
		/**
		 * Action renvoyée lorsque la connexion se ferme brutalement.
		 */
		public static const CLOSE_ERROR:String="close_error";

		//fonctions pythons
		/**
		 * Action indiquant au serveur que l'on souhaite s'identifier.
		 */
		public static const CALL_IDENTIFICATION:String="Identification";
		/**
		 * Action indiquant au serveur que l'on souhaite rejoindre un salon.
		 */
		public static const CALL_GOTO:String="goto";
		/**
		 * Action indiquant au serveur que l'on souhaite quitter un salon.
		 */
		public static const CALL_LEAVE:String="leave";
		/**
		 * Action indiquant au serveur que l'on souhaite envoyer un message à une personne en particulier.
		 */
		public static const CALL_SEND:String="send";
		/**
		 * Action indiquant au serveur que l'on souhaite envoyer un message à un salon.
		 */
		public static const CALL_SEND_ROOM:String="sendRoom";
		/**
		 * Contient une valeur parmi toutes les constantes d'action. 
		 * Permet d'indiquer au serveur quelle action l'on souhaite effectuer.
		 * Celà permet également au serveur de répondre de la même manière.
		 */
		public var action:String;
		/**
		 * Liste de paramètres associés à l'action. Dépend de l'action.
		 */
		public var parameters:Array;
		/**
		 * Crée un objet de type PyGram.
		 * Les propriétés action et parameters doivent être indiquées avant tout envoi.
		 */
		public function PyGram()
		{
			action="";
			parameters=new Array();
		}
		/**
		 * Indique si le PyGram représente une erreur.
		 */
		public function isError():Boolean
		{
			return action==BAD_IDENTIFICATION || action==TIMEOUT || action==TOO_MANY_PEOPLE || action==ALREADY_CONNECTED;
		}
		/**
		 * Indique si le PyGram est un message correct et non une erreur.
		 */
		public function isCorrect():Boolean
		{
			return !isError();
		}
		/**
		 * @copy mymyoux.core.IObject#toString()
		 */
		public function toString():String
		{
			return "[PyGram action=\""+action+"\" parameters=\""+parameters+"\" error=\""+isError()+"\"]";
		}

	}
}